package com.example.gateway.designPattern.facade;

/**
 * @ClassName: Client
 * @Description:
 * @Author: YourName
 * @Date: 2024/12/31
 */

public class Client {

    public static void main(String[] args) {
        /**
        * 外观模式
         *    外观模式（Facade Pattern）是一种结构型设计模式，它提供了一个统一的接口，用于访问子系统中的一组接口。外观模式隐藏了子系统的复杂性，使得客户端可以更简单地使用系统。
         *    外观模式的主要角色包括：
         *     外观类（Facade）：外观类是外观模式的核心，它提供了统一的接口，用于访问子系统的功能。
         *     子系统类（SubSystem）：子系统类是外观模式中的具体实现类，它们实现了具体的业务逻辑。
         *     客户端类（Client）：客户端类是使用外观模式的类，它通过外观类来访问子系统的功能。
         *
         *     优点
         *      松散耦合
         * 　　   使得客户端和子系统之间解耦，让子系统内部的模块功能更容易扩展和维护；
         * 　　  - 简单易用
         * 　　   客户端根本不需要知道子系统内部的实现，或者根本不需要知道子系统内部的构成，它只需要跟Facade类交互即可。
         * 　　  - 更好的划分访问层次
         * 　     有些方法是对系统外的，有些方法是系统内部相互交互的使用的。子系统把那些暴露给外部的功能集中到门面中，这样就可以实现客户端的使用，很好的隐藏了子系统内部的细节。
        */
        Computer facade = new Computer(); // 创建外观对象
        facade.start();
        facade.shutdown();

    }
}
